VisualApplets에서의 구현

VisualApplets 에서는 기하 변환, 결합된 기하 변환 및 왜곡 보정, 그리고 이미지 모멘트에 의해 제어되는 기하 변환을 수행하는 예제 설계들이 구현되어 있습니다. 기하 변환은 대상-원본 매핑, 즉 역변환을 통해 구현됩니다. 이 방법은 PC로 전송되는 대상 이미지에 누락된 픽셀이 없음을 보장하는 데 필수적입니다 [Bur06]. 우리는 연산자 를 기반으로 역 기하 변환을 구현하였으며, FrameBufferRandomRead 를 기반으로 구현했으며, 대안으로는 연산자 PixelReplicator를 기반으로 구현했습니다. 두 방법의 차이점은 다음 소절에서 설명할 것입니다. 이 소절들에서는 예제 설계를 상세히 소개합니다.

다음 함수를 사용한 기하학적 변환 FrameBufferRandomRead를 이용한 기하 변환
간략한 설명

파일: \examples\Processing\Geometry\GeometricTransformation\GeometricTransformation_ FrameBufferRandomRead.va

Default Platform: mE5-MA-VCL

요약 설명

기하 변환: 연산자를 이용한 회전, 평행 이동, 크기 조정 FrameBufferRandomRead

VA 디자인 “Geometric Transformation_FrameBufferRandomRead.va”에는 대상-원본 매핑을 사용하는 기하 변환이 구현되어 있습니다. 이 방법은 PC로 전송되는 대상 이미지에 누락된 픽셀이 없음을 보장하는 데 필수적입니다 [Bur06]. 원본 이미지의 좌표 모든 대상 좌표에 대해 역 기하 변환을 사용하여 계산됩니다 . 좌표가 위치한 곳에서 소스 이미지의 픽셀 값은 연산자를 사용하여 읽힙니다. FrameBufferRandomRead 병렬도가 1일 때, 연산기는 각 픽셀을 DRAM에 개별적으로 저장하고 픽셀을 하나씩 차례로 읽어옵니다. 선형 보간은 계산된 원본 이미지 좌표가 원본 이미지의 픽셀 좌표와 일치하지 않을 때, 출력 이미지의 픽셀 값을 PC에 맞게 보정하는 데 도움이 됩니다. 그림에서 297 기본적인 디자인 구조를 확인할 수 있습니다.

VA 디자인 “GeometricTransformation_FrameBufferRandomRead.va”의 기본 설계 구조

그림 297. VA 디자인 “GeometricTransformation_FrameBufferRandomRead.va”의 기본 설계 구조


이 설계는 Camera Link 의 기본 구성(BaseGrayCamera_Camera)와 HierarchicalBox 기하 변환 로, 여기서 획득된 이미지의 크기 조정, 회전 및 평행 이동이 수행됩니다. 연산자 ImageBuffer_Buffer 는 이미지를 저장할 수 있게 해줍니다. DMA(연산자 DmaToPC_DMA0)를 통해 이미지가 PC로 전송됩니다.

298번에서 HierarchicalBox의 내용을 확인할 수 있습니다 GeometricTransformation의 내용을 확인할 수 있습니다. 매개변수 IntParamTranslator, FloatParamReference 및 IntParamReference 를 사용하면 기하학적 변환의 관련 매개변수(확대/축소, 회전, 평행 이동 값 및 이미지 크기)를 매우 편리하게 설정할 수 있습니다. 속성은 이미지 Height 및 Width, 그리고 이미지를 x 및 y 방향으로 이동시킬 픽셀 수 (매개변수: Translatex 및 Translatey) 및 x, y 방향의 확대/축소 계수 Scalex 와 Scaley가 있습니다. 매개변수 Phi를 사용하여 회전 각도를 도 단위로 설정할 수 있습니다. 또는 이 속성 를 설정할 수 있습니다. GeometricTransformation에서 “마우스 오른쪽 클릭”을 통해 이속성들을 설정할 수도 있습니다. 이 상자의 내용은 그림 298에서 확인할 수 있습니다.

HierarchicalBox의 “GeometricTransformation” 내용

그림 298. HierarchicalBox “GeometricTransformation”의 내용


The 원본 이미지 버퍼에 선형적으로 기록됩니다 FrameBufferRandomRead. 각 픽셀에 대해 인접 픽셀들은 2x2 커널(HierarchicalBox)에 저장됩니다 NextNeighbours). 대상 이미지의 좌표 (예: 21) 연산자를 사용하여 생성되며 CreateBlankImage, CoordinateX 및 CoordinateY HierarchicalBox 내의 OutputImage (HierarchicalBox에 포함됨 CoordinateTransformation) (그림 참고. 299 및 300).

HierarchicalBox CoordinateTransformation의 콘텐츠

그림 299. HierarchicalBox CoordinateTransformation의 콘텐츠


HierarchicalBox OutputImage의 콘텐츠

그림 300. HierarchicalBox OutputImage의 콘텐츠


좌표는 식에 따라 역방향으로 회전, 이동 및/또는 Scaling될 수 있습니다. 21. 회전 각도 및 이동과 Scaling을 위한 파라미터는 및 위에서 설명한 대로 전송 파라미터를 통해 해당 상수를 설정하여 선택할 수 있습니다. 그림 301 에서 식의 VA 구현을 확인할 수 있으며, 21 추가 Scaling 기능이 포함되어 있습니다.

HierarchicalBox InverseTransformation의 콘텐츠

그림 301. HierarchicalBox InverseTransformation의 콘텐츠


역변환의 결과 좌표는 소스 좌표입니다 및 (예: 21). HierarchicalBox SplitFractionalAndIntegerBit (그림 298에서 이러한 좌표의 정수 및 소수점 비트 부분이 분리됩니다. 소스 이미지의 픽셀 위치에 해당하는 정수 비트 부분은 연산자의 좌표 입력입니다 FrameBufferRandomRead x 및 y 방향 (그림 참고. 298). 이 연산자는 해당 좌표의 소스 이미지에서 픽셀 값 정보(Parallelism = 1)를 인접 픽셀(위 참조)과 함께 읽어옵니다. 소스 좌표의 소수점 비트 부분은 및 소스 이미지의 픽셀 간 위치에 해당합니다. 이러한 정보와 소스 이미지의 인접 픽셀에서 가져온 픽셀 값 정보를 바탕으로, 타겟 이미지의 실제 픽셀 값은 HierarchicalBox 내에서 쌍선형(bilinear) 방식으로 보간. 보간 프로세스에 대한 자세한 설명은 다음을 참조하십시오 [Bur06]을(를) 참조하십시오.

그림 302와 303에서 기하학적 변환의 예시로 소스 이미지와 타겟 이미지를 확인할 수 있습니다. x 및 y 방향으로 100픽셀 이동하고 45° 회전하는 변환이 수행되었습니다.

소스 이미지

그림 302. 소스 이미지 [Ope16a]


회전 및 이동된 타겟 이미지

그림 303. 회전 및 이동된 타겟 이미지


이미지 모멘트를 사용한 기하학적 변환
간략한 설명

File: \examples\Processing\Geometry\GeometricTransformation\GeometricTransformation_ImageMoments.va

Default Platform: mE5-MA-VCL

요약 설명

기하학적 변환: 이미지 모멘트를 사용하여 객체를 이미지 중심로 회전 및 이동

이 예시 디자인에서는 이미지 모멘트를 사용하여 RGB 이미지 내 객체의 위치와 회전 각도를 결정합니다. 수평 방향으로의 회전과 이미지 중심부로의 이동이 수행됩니다. 기본값으로 입력 이미지 크기는 640x240픽셀이고 출력 이미지 크기는 256x128픽셀입니다. 그림 304에서 기본 설계 구조를 확인할 수 있습니다.

VA 디자인 "GeometricTransformation_ImageMoments.va"의 기본 설계 구조

그림 304. VA 디자인 "GeometricTransformation_ImageMoments.va"의 기본 설계 구조


이 디자인은 Camera Link Base 구성의 RGB 카메라 인터페이스(BaseRgbCamera_Camera)와, 획득한 이미지의 회전 및 이동이 수행되는 HierarchicalBox Geometric Transformation으로 구성됩니다. "속성(Properties)"에서 마우스 우클릭을 통해 입력 및 출력 이미지 크기와 이진화 임계값을 설정할 수 있습니다. 이 임계값은 아래에 설명된 대로 이미지 모멘트 계산과 관련이 있습니다. 기하학적 변환은 타겟-투-소스 매핑을 사용하여 수행됩니다( 섹션의 소개글 참조). DMA(연산자 DmaToPC_DMA0)를 통해 이미지가 PC로 전송됩니다. 그림 305에서 Geometric Transformation의 내용을 확인할 수 있습니다.

HierarchicalBox GeometricTransformation의 내용

그림 305. HierarchicalBox GeometricTransformation의 내용


수평 위치에 대한 상대적인 회전 각도와 객체의 무게 중심 위치는 이진화된 이미지(HierarchicalBox Binarization)에서 계산된 HierarchicalBox ImageMoments의 이미지 모멘트를 통해 결정됩니다. ImageMoments의 내용은 VA 예시 "ImageMoments.va"의 ImageMoments 상자와 동일하지만( 섹션의 그림 325 참조) 객체 편심률 계산은 제외됩니다. HierarchicalBox ImageMoments의 출력 링크(위에서 아래로)는 x 및 y 방향의 무게 중심 위치와 회전 각도입니다. 이러한 파라미터를 기반으로 한 소스 좌표 계산(식 21에 따름)은 HierarchicalBox CoordinateTransformation의 내용입니다. 306에서 이 상자의 내용을 확인할 수 있습니다.

HierarchicalBox CoordinateTransformation의 콘텐츠

그림 306. HierarchicalBox CoordinateTransformation의 내용


HierarchicalBox Synchronization x 및 y 방향의 무게 중심과 회전의 단일 픽셀 값이 HierarchicalBox에 정의된 출력 이미지 크기로 확장되며, OutputImage. 이 상자의 출력 링크는 타겟 이미지 좌표를 나타냅니다. . HierarchicalBox InverseTransformation 소스 좌표는 및 식에 따라 계산됩니다. 21. 그림 307 에서 이 상자의 내용을 확인할 수 있습니다.

HierarchicalBox InverseTransformation의 콘텐츠

그림 307. HierarchicalBox InverseTransformation의 내용


이 상자의 디자인 구조는 예제 "GeometricTransformation_FrameBufferRandomRead.va" 및 "GeometricTransformation_PixelReplicator.va"의 역변환 구현과 유사합니다. 차이점은 x 및 y 방향의 평행 이동(translation) 파라미터가 무게 중심과 x 및 y 방향의 이미지 중심 간의 차이에 의해 결정된다는 점입니다(상자 내용 참조 Translation_x 및 Translation_y). 회전 각도(상자 내용 Phi)는 이미지 모멘트 계산 결과에 의해 정의됩니다. 그림의 기본 디자인 구조로 돌아가서 304. 계산된 소스 이미지 좌표는 및 상자의 출력 링크를 CoordinateTransformation나타냅니다. GeometricTransformation (그림 308) 상자에서는 연산자를 사용한 기하학적 변환과 FrameBufferRandomRead 올바른 타겟 픽셀 값의 양선형 보간(bilinear interpolation)이 "GeometricTransformation_FrameBufferRandomRead.va" 예제와 유사하게 수행됩니다(그림 참조 298 , 섹션 ).

Content of HierarchicalBox GeometricTransformation

그림 308. HierarchicalBox GeometricTransformation의 내용


그림 309의 예제 객체에 대해 그림 310에서 방향 및 위치가 보정된 타겟 이미지를 확인할 수 있습니다.

소스 이미지(해상도: 640x240 픽셀)

그림 309. 소스 이미지(해상도: 640x240 픽셀)


위치 및 방향이 보정된 타겟 이미지(크기: 256x128 픽셀)

그림 310. 위치 및 방향이 보정된 타겟 이미지(해상도: 256x128 픽셀)


PixelReplicator를 사용한 기하학적 변환
간략한 설명

파일: \examples\Processing\Geometry\GeometricTransformation\GeometricTransformation_PixelReplicator.va

Default Platform: mE5-MA-VCL

요약 설명

PixelReplicator 오퍼레이터를 사용한 기하학적 변환: 회전, 이동, Scaling

VisualApplets 디자인 예시 "GeometricTransformation_PixelReplicator.va"는 "GeometricTransformation_FrameBufferRandomRead.va" 예시와 동일한 기하학적 변환을 수행하지만 성능이 더 뛰어납니다. 위에서 설명한 바와 같이 FrameBufferRandomRead 오퍼레이터는 각 픽셀을 DRAM에 개별적으로 저장하고 차례대로 읽어옵니다. 이 예시에서는 일정량의 픽셀 블록이 하나의 DRAM 셀에 저장됩니다. 이 예시 디자인은 읽어야 할 픽셀이 이전 픽셀과 동일한 셀에 있지 않은 경우에만 DRAM에서 읽어옵니다. DRAM 셀당 8개의 픽셀을 사용하는 그림 311의 예시는 성능 향상에 대한 아이디어를 제공합니다.

예시: 하나의 DRAM 셀에 8개의 픽셀이 저장됨

그림 311. 예시: 하나의 DRAM 셀에 8개의 픽셀이 저장됨


DRAM 블록은 녹색으로 표시됩니다. 9개의 픽셀 a~i를 읽으려면 9개 대신 3개의 DRAM 사이클이 필요합니다. 여기서는 3의 유효 Parallelism을 달성합니다. RAM 셀 하나에 저장할 수 있는 8비트 픽셀의 최대 개수는 32개입니다(marathon VCL 데이터 폭: 256비트). RAM 셀 블록의 ROI 형태는 기하학적 변환의 회전 각도에 의해 정의됩니다. 기본값으로 이 예시에서는 9x3 픽셀의 RAM 셀 형태가 선택됩니다. 기본 디자인 구조는 그림 297의 디자인 구조와 동일하지만 PARALLELdn_To1 오퍼레이터가 없습니다. HierarchicalBox GeometricTransformation의 콘텐츠는 "GeometricTransformation_FrameBufferRandomRead.va" 예시의 해당 상자(그림 298)와도 동일합니다. 차이점은 FrameBufferRandomRead 오퍼레이터가 HierarchicalBox FrameBufferRandomRead_Par8로 대체되었다는 점입니다. 그림 312에서 그 콘텐츠를 확인할 수 있습니다.

HierarchicalBox FrameBufferRandomRead_Par8의 콘텐츠

그림 312. HierarchicalBox FrameBufferRandomRead_Par8의 콘텐츠


박스 CollectNeighbors 소스 이미지가 서브 ROI로 분할되며, 이는 각 RAM 셀의 크기를 정의합니다. 여기서는 9x3의 RAM 셀 크기가 선택됩니다. SplitAdressX 및 SplitAdressY 역기하학적 변환의 결과인 소스 좌표의 정수 비트 부분(섹션 및 참조 )은 두 개의 구성 요소로 분할됩니다. 상위 비트 부분( SplitAdressX 및 SplitAdressY의 상위 출력 링크)은 DRAM 셀의 위치를 나타내고, 하위 비트 부분은 DRAM 셀 내의 픽셀 위치를 나타냅니다. DRAM 셀은 HierarchicalBox Buffer (오퍼레이터 FrameBufferRandomRead포함)의 DRAM 셀 좌표에서 읽어옵니다(단, 이전 DRAM 셀을 재사용하기로 RepeatDeciderHerarchicalBox에서 결정되지 않은 경우). 이전 셀을 재사용하기로 결정한 경우, DRAM 셀의 픽셀 값을 복제해야 합니다. 이는 ReplicateValues HierarchicalBox에서 수행됩니다. operator를 사용한 PixelReplicator나타냅니다. ExtractSubKernel 출력으로 pixel coordinates를 사용하여 DRAM 셀에서 다음 이웃 픽셀과 함께 필요한 pixel value가 추출됩니다 SplitAdressX 및 SplitAdressY (하단 출력 링크). 올바른 target pixel value의 양선형 보간(bilinear interpolation)은 다음의 예제와 동일하게 수행됩니다 .

Geometric Transformation and Distortion Correction
간략한 설명

File: \examples\Processing\Geometry\GeometricTransformation\GeometricTransformation_ DistortionCorrection.va

Default Platform: mE5-MA-VCL

요약 설명

operator PixelReplicator를 사용한 Geometric Transformation: rotation, translation, Scaling, distortion 및 Keystone correction

VA 예제 "GeometricTransformation_DistortionCorrection.va"는 "GeometricTransformation_PixelReplicator.va" 디자인의 확장입니다. 또한 이 디자인에는 distortion 및 Keystone correction(식 22 및 식 23에 따름)이 구현되어 있습니다. 다음에서는 "GeometricTransformation_PixelReplicator.va"와의 차이점에 대해서만 설명합니다. 그림 313에서 기본 설계 구조를 확인할 수 있습니다.

VA 디자인 "GeometricTransformation_DistortionCorrection.va"의 기본 설계 구조

그림 313. VA 디자인 "GeometricTransformation_DistortionCorrection.va"의 기본 설계 구조


CameraLink base 구성의 카메라 인터페이스에서 가져온 grayscale image(최대 크기: 4096x4096 pixels) (BaseGrayCamera_Camera)가 HierarchicalBox GeoTransAndDistCorr에서 변환되어 DMA를 통해 PC로 전송됩니다 (DmaToPC_DMA0). 이 구조는 "GeometricTransformation_FrameBufferRandomRead" 및 "GeometricTransformation_PixelReplicator" 디자인과 동일합니다. GeoTransAndDistCorr의 구조는 동일한 두 디자인의 박스 GeometricTransformation와 동일합니다 (그림 298 참조). 여기서는 역변환 및 추가로 distortion과 Keystone correction이 수행됩니다. 박스 CoordinateTransformation의 내용(박스 GeometricTransformation 내)은 그림 314에 나와 있습니다.

HierarchicalBox CoordinateTransformation의 콘텐츠

그림 314. HierarchicalBox CoordinateTransformation의 내용


"GeometricTransformation_FrameBufferRandomRead" 및 "GeometricTransformation_PixelReplicator" 디자인과 동일하게(섹션 및 ) target coordinates는 식에 따라 역변환됩니다 21 추가 Scaling(섹션도 참조 ). 역변환의 결과 coordinates를 사용하여 HierarchicalBoxes에서 inverse Keystone 및 distortion correction을 수행합니다 KeystoneCorrrection 및 DistortionCorrection. 이 박스들의 내용은 그림 315 및 그림 314.

HierarchicalBox KeystoneCorrection의 내용

그림 315. HierarchicalBox KeystoneCorrection의 내용


HierarchicalBox DistortionCorrection의 내용

그림 316. HierarchicalBox DistortionCorrection의 내용


이 상자들에는 식 22 및 식 23 이 구현되어 있습니다. 상자 내의 행렬 요소 m1부터 m9까지는 Z_x, Z_y 및 N (그림 315) OpenCV 라이브러리 [Ope16b]를 사용하여 계산할 수 있습니다. 예제 이미지 "Example.tif" (\examples\Processing\Geometry\GeometricTransformation 경로)의 경우, 동일한 위치의 텍스트 파일 "MatrixValues.txt"에서 예제 행렬 값을 확인할 수 있습니다. 그림의 왜곡 보정(distortion correction)을 위해 314 먼저 좌표가 광학 중심(optical center)에 상대적인 좌표계로 변환됩니다(CoordinateTransformation_x 및 CoordinateTransformation_y), 이는 대부분의 경우 이미지 중심입니다. HierarchicalBox DistortionCoefficient 에서 광학 중심으로부터의 거리 (식 23 참조)가 계산됩니다. 모든 에 대해 왜곡 보정 파라미터가 룩업 테이블에 존재합니다(그림 317 참조). 룩업 테이블은 외부에서 Matlab 모듈을 사용하여 생성되며, 해당 모듈은 \examples\Processing\Geometry\GeometricTransformation \LUTDistortionCorrection.m에서 찾을 수 있습니다. 왜곡 파라미터 및 는 OpenCV 라이브러리 [Ope16b]로 생성되었습니다. "LUTDistortionCorrection.m"에서 예시 보정 파라미터를 확인할 수 있습니다. 및 예제 이미지 "Example.tif"(\examples\Processing\Geometry\GeometricTransformation 경로 위치) [Ope16a] 기준. 그 다음 계수 가 좌표 및 (그림 314)에 곱해집니다. 결과로 생성된 왜곡된 좌표는 "이미지 좌측 상단 모서리"(상자 CoordinateTransformation_x 및 CoordinateTransformation_y 참조)에 상대적인 좌표계로 다시 변환됩니다. 그 결과는 소스 이미지 좌표 및 가 됩니다. HierarchicalBox의 콘텐츠 LimitCoordinateValues (그림 314)는 변환된 이미지 좌표에 대한 경계 조건을 설정합니다. 정수 및 소수점 비트 부위 분리 후 (상자 SplitFractionalAndIntegerBit 에서 298 참조) 계산된 해당 정수 소스 이미지 좌표의 픽셀 값이 소스 이미지에서 읽혀집니다. 소스 이미지의 픽셀 간 위치로 인해 출력 이미지의 픽셀 값을 보정하기 위해 소수점 비트 부위는 [ 보간]에 따라 쌍선형 보간법(bilinear interpolation,Bur06)에 사용됩니다. DMA를 통해 신호가 PC로 전송됩니다. 시연을 위해 그림 318, 319 및 320 에서 왜곡된 소스 이미지, Keystone 및 distortion correction된 타겟 이미지, 그리고 회전 및 distortion correction된 타겟 이미지를 확인할 수 있습니다.

HierarchicalBox DistortionCoefficient의 콘텐츠

그림 317. HierarchicalBox DistortionCoefficient의 콘텐츠


예제 소스 이미지

그림 318. 예제 소스 이미지 [Ope16a]


왜곡 및 Keystone 보정된 타겟 이미지

그림 319. 왜곡(Distortion) 및 키스톤(Keystone)이 보정된 타겟 이미지


회전, 왜곡 및 Keystone 보정된 타겟 이미지

그림 320. 회전되고 왜곡 및 키스톤이 보정된 타겟 이미지


Distortion Correction
간략한 설명

파일: \examples\Processing\Geometry\GeometricTransformation\DistortionCorrection.va

Default Platform: mE5-MA-VCL

요약 설명

이 예제 디자인에서는 distortion correction이 구현됩니다.

"DistortionCorrection.va" 디자인에서는 식 22에 따른 distortion correction이 구현됩니다. 이는 "GeometricTransformation_DistortionCorrection.va" 디자인의 내용과 유사하지만, geometric transformation 및 keystone correction을 수행하지 않는다는 점이 다릅니다. 기본 디자인 구조는 그림 321에서 확인할 수 있습니다.

VA 디자인 "DistortionCorrection.va"의 기본 디자인 구조

그림 321. VA 디자인 "DistortionCorrection.va"의 기본 디자인 구조


이 디자인은 Camera Link Base 구성의 흑백 카메라 인터페이스, 버퍼 모듈, HierachicalBox DistortionCorrection 및 DmaToPC로 구성됩니다. 흑백 이미지의 Distortion Correction은 DistortionCorrection에서 수행됩니다. 그 내용은 그림 322에서 확인할 수 있습니다.

HierarchicalBox DistortionCorrection의 내용

그림 322. HierarchicalBox DistortionCorrection의 내용


구조는 다음 HierarchicalBox의 내용과 유사합니다. GeometricTransformation (참조: 그림 298) 섹션의 "GeometricTransformation_PixelReplicator.va" 디자인 . 연산자 FrameBufferRandomRead 가 HierarchicalBox로 대체됩니다. FrameBufferRandomRd_Par8 "GeometricTransformation_PixelReplicator.va" 및 "GeometricTransformation_DistorationCorrection.va"에서도 수행된 바와 같습니다. (참조 섹션 및 ). 소스 이미지가 버퍼링 요소에 선형으로 기록됩니다 FrameBufferRandomRd_Par8. 이 모듈에서는 각 픽셀과 함께 세 개의 다음 이웃도 저장됩니다(상자 CollectNeighbors 상자 내 FrameBufferRandomRd_Par8). 상자에서 CoordinateTransformation/ OutputImage 대상 이미지 좌표가 연산자를 사용하여 생성됩니다 CreateBlankImage, CoordinateX 및 CoordinateY. 이 좌표들은 방정식에 따라 변환됩니다. 22 소스 이미지 좌표로 HierarchicalBox 내의 InverseCorrection (상자 참조 CoordinateTransformation). 그 내용은 그림에서 확인할 수 있습니다. 323.

HierarchicalBox InverseCorrection의 내용

그림 323. HierarchicalBox InverseCorrection의 내용


이는 상자의 구현과 동일합니다. DistortionCorrection "GeometricTransformation_DistortionCorrection.va" 참조(그림 316). 각 타겟 이미지 반경에 대해 이미지 중심을 기준으로 한 룩업 테이블 값인 C_r 가 HierarchicalBox에서 선택됩니다. DistortionCoefficient. C_r 는 타겟 이미지 좌표와 곱해지며 식에 따라 22 첫 번째 픽셀 기준의 좌표계로 다시 변환됩니다(참조: CoordinateTransformation_x_1 및 CoordinateTransformation_y_1). 그림 에서 볼 수 있듯이, 322 결과 소스 좌표는 상자 안에서 정수부와 소수부로 분할됩니다 SplitFractionalAndIntegerBit. 정수부는 해당 소스 이미지 좌표에서 소스 이미지의 픽셀을 읽는 데 사용되며, 소수부는 최종 결과의 양선형 보간(bilinear interpolation)에 사용됩니다. 왜곡이 보정된 이미지는 DMA를 통해 PC로 전송됩니다.